package models.proxies {
  import com.axon.dataservices.AxDS;
  import com.axon.mvc.helpers.AxVerbs;
  import com.axon.mvc.patterns.proxy.AxProxy;

  import models.vo.Foto;
  import models.vo.Vistoria;

  public class FotoProxy extends AxProxy {
    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function list(vistoria:Vistoria):void {
      AxDS.reload(Foto,
        onListSuccess,
        onListFailure,
        [vistoria],
        null,
        false);
    }

    private function onListSuccess(result:Object):void {
      reportSuccess(AxVerbs.LIST, result);
    }

    private function onListFailure(result:Object):void {
      reportFailure(AxVerbs.LIST);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function create(foto:Foto):void {
      var vistoria:Vistoria = foto.vistoria;
      foto.vistoria = null;
      foto.create(onCreateSuccess, onCreateFailure, [vistoria]);
    }

    private function onCreateSuccess(result:Object):void {
      reportSuccess(AxVerbs.CREATE, result);
    }

    private function onCreateFailure(result:Object):void {
      reportFailure(AxVerbs.CREATE);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function update(foto:Foto):void {
      foto.update(onUpdateSuccess, onUpdatFailure);
    }

    private function onUpdateSuccess(result:Object):void {
      reportSuccess(AxVerbs.UPDATE, result);
    }

    private function onUpdatFailure(result:Object):void {
      reportFailure(AxVerbs.UPDATE);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function apagar(foto:Foto):void {
      foto.destroy(onApagarSuccess, onApagarFailure);
    }

    private function onApagarSuccess(result:Object):void {
      reportSuccess(AxVerbs.DELETE, result);
    }

    private function onApagarFailure(result:Object):void {
      reportFailure(AxVerbs.DELETE);
    }

  }
}